package ventanas.prueba;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.ImageIcon;


/**
 *
 * @author Nerea
 */
public class PanelEstadisticas extends javax.swing.JPanel {

	// Variables declaration - do not modify
	private javax.swing.JButton bAceptar;
	private javax.swing.JLabel lEnemigosMatados;
	private javax.swing.JLabel lIgual1;
	private javax.swing.JLabel lIgual2;
	private javax.swing.JLabel lLetraRango;
	private javax.swing.JLabel lMonedas;
	private javax.swing.JLabel lNivelesSubidos;
	private javax.swing.JLabel lNumeroEnemigosMatados;
	private javax.swing.JLabel lNumeroMonedas;
	private javax.swing.JLabel lNumeroNivelesSubidos;
	private javax.swing.JLabel lNumeroPorEnemigos;
	private javax.swing.JLabel lNumeroPorTiempo;
	private javax.swing.JLabel lNumeroTiempo;
	private javax.swing.JLabel lNumeroTotal;
	private javax.swing.JLabel lPuntos1;
	private javax.swing.JLabel lPuntos2;
	private javax.swing.JLabel lPuntosEnemigos;
	private javax.swing.JLabel lPuntosTiempo;
	private javax.swing.JLabel lRango;
	private javax.swing.JLabel lTiempo;
	private javax.swing.JLabel lTotal;
	private javax.swing.JLabel lX1;
	private javax.swing.JLabel lX2;
	private PanelInicial panelInicial;
	private PanelSubirNivel panelSubirNivel;

	private int tiempoJuego;
	private int totalEnem;
	private int multTiempo = 3;
	private int multEnem = 2;
	private double multMonedas = 0.5;
	private int totalExperiencia;
	private int totalExpSubirNivel = 20; //Cuando el personaje suba de nivel: Hay que modificar la experiencia del personaje con  totalExpSubirNivel

	private int totalPuntosTiempo;
	private int totalPuntosEnemigos;
	private int totalPuntos;
	private int totalMonedas;
	private int numeroNivel;
	private int contNivel = 0;

	// End of variables declaration
	/**
	 * Creates new form PanelEstadisticas
	 */
	public PanelEstadisticas(PanelInicial pI, int tiempoJ, int numEnem, int exper, int numNivel) { //Cargarme el atributo panelInicial y el parametro!
		panelInicial = pI;
		tiempoJuego = tiempoJ;
		totalEnem = numEnem;
		totalExperiencia = exper;
		numeroNivel = numNivel;

		panelSubirNivel = new PanelSubirNivel(panelInicial, this);
		lTiempo = new javax.swing.JLabel();
		lNumeroTiempo = new javax.swing.JLabel();
		lX1 = new javax.swing.JLabel();
		lNumeroPorTiempo = new javax.swing.JLabel();
		lIgual1 = new javax.swing.JLabel();
		lPuntosTiempo = new javax.swing.JLabel();
		lPuntos1 = new javax.swing.JLabel();
		lEnemigosMatados = new javax.swing.JLabel();
		lNumeroEnemigosMatados = new javax.swing.JLabel();
		lX2 = new javax.swing.JLabel();
		lNumeroPorEnemigos = new javax.swing.JLabel();
		lIgual2 = new javax.swing.JLabel();
		lPuntosEnemigos = new javax.swing.JLabel();
		lPuntos2 = new javax.swing.JLabel();
		lNivelesSubidos = new javax.swing.JLabel();
		lNumeroNivelesSubidos = new javax.swing.JLabel();
		lTotal = new javax.swing.JLabel();
		lNumeroTotal = new javax.swing.JLabel();
		lMonedas = new javax.swing.JLabel();
		lNumeroMonedas = new javax.swing.JLabel();
		lRango = new javax.swing.JLabel();
		lLetraRango = new javax.swing.JLabel();
		bAceptar = new javax.swing.JButton();

		setLayout(null);


		lTiempo.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lTiempo.setText("TIEMPO:");
		add(lTiempo);
		lTiempo.setBounds(76, 66, 221, 25);

		lNumeroTiempo.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lNumeroTiempo.setText("00:00");
		add(lNumeroTiempo);
		lNumeroTiempo.setBounds(315, 66, 81, 25);

		lX1.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lX1.setText("x");
		add(lX1);
		lX1.setBounds(402, 64, 17, 29);

		lNumeroPorTiempo.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lNumeroPorTiempo.setText("0");
		add(lNumeroPorTiempo);
		lNumeroPorTiempo.setBounds(437, 66, 19, 25);

		lIgual1.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lIgual1.setText("=");
		add(lIgual1);
		lIgual1.setBounds(487, 66, 17, 25);

		lPuntosTiempo.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lPuntosTiempo.setText("XXXX");
		add(lPuntosTiempo);
		lPuntosTiempo.setBounds(537, 64, 66, 29);

		lPuntos1.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lPuntos1.setText("PUNTOS");
		add(lPuntos1);
		lPuntos1.setBounds(632, 66, 83, 25);

		lEnemigosMatados.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lEnemigosMatados.setText("ENEMIGOS MATADOS:");
		add(lEnemigosMatados);
		lEnemigosMatados.setBounds(76, 158, 221, 22);

		lNumeroEnemigosMatados.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lNumeroEnemigosMatados.setText("00");
		add(lNumeroEnemigosMatados);
		lNumeroEnemigosMatados.setBounds(315, 158, 27, 22);

		lX2.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lX2.setText("x");
		add(lX2);
		lX2.setBounds(399, 158, 20, 22);

		lNumeroPorEnemigos.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lNumeroPorEnemigos.setText("0");
		add(lNumeroPorEnemigos);
		lNumeroPorEnemigos.setBounds(437, 155, 32, 29);

		lIgual2.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lIgual2.setText("=");
		add(lIgual2);
		lIgual2.setBounds(487, 155, 28, 29);

		lPuntosEnemigos.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lPuntosEnemigos.setText("XXXX");
		add(lPuntosEnemigos);
		lPuntosEnemigos.setBounds(537, 155, 66, 29);

		lPuntos2.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lPuntos2.setText("PUNTOS");
		add(lPuntos2);
		lPuntos2.setBounds(632, 155, 91, 29);

		lNivelesSubidos.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lNivelesSubidos.setText("NIVELES SUBIDOS:");
		add(lNivelesSubidos);
		lNivelesSubidos.setBounds(76, 281, 221, 25);

		lNumeroNivelesSubidos.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lNumeroNivelesSubidos.setText("0");
		add(lNumeroNivelesSubidos);
		lNumeroNivelesSubidos.setBounds(315, 281, 27, 25);

		lTotal.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lTotal.setText("TOTAL:");
		add(lTotal);
		lTotal.setBounds(537, 355, 78, 29);

		lNumeroTotal.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lNumeroTotal.setText("XXXX");
		add(lNumeroTotal);
		lNumeroTotal.setBounds(663, 355, 52, 29);

		lMonedas.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lMonedas.setText("MONEDAS:");
		add(lMonedas);
		lMonedas.setBounds(537, 429, 104, 22);

		lNumeroMonedas.setFont(new java.awt.Font("Consolas", 1, 24)); // NOI18N
		lNumeroMonedas.setText("0");
		add(lNumeroMonedas);
		lNumeroMonedas.setBounds(663, 426, 50, 29);

		lRango.setFont(new java.awt.Font("Kristen ITC", 1, 24)); // NOI18N
		lRango.setText("RANGO");
		add(lRango);
		lRango.setBounds(101, 503, 129, 41);

		lLetraRango.setFont(new java.awt.Font("Kristen ITC", 1, 48)); // NOI18N
		lLetraRango.setText("S");
		add(lLetraRango);
		lLetraRango.setBounds(248, 461, 57, 108);

		//bAceptar.setText("ACEPTAR");
		bAceptar.setIcon(new ImageIcon(getClass().getClassLoader().getResource("resources/ventanas/bAceptar.png")));
		bAceptar.addMouseListener(new MouseListener() {
			public void mouseClicked(MouseEvent evt) {
				subirNivel(evt);
			}

			public void mouseEntered(MouseEvent arg0) {
				bAceptar.setRolloverIcon(new ImageIcon(getClass().getClassLoader().getResource("resources/ventanas/bAAceptar.gif")));
			}

			public void mouseExited(MouseEvent arg0) {
				bAceptar.setIcon(new ImageIcon(getClass().getClassLoader().getResource("resources/ventanas/bAceptar.png")));
			}

			public void mousePressed(MouseEvent arg0) {	   }

			public void mouseReleased(MouseEvent arg0) {	}
		});
		add(bAceptar);
		bAceptar.setBounds(537, 500, 157, 48);

		//Calculos operatorios
		totalPuntosTiempo = tiempoJuego * multTiempo;
		totalPuntosEnemigos = totalEnem * multEnem;
		totalPuntos = totalPuntosTiempo + totalPuntosEnemigos;
		totalMonedas = (int) (totalPuntos * multMonedas);
		
		System.out.println("Total puntos: "+totalPuntos);

		lNumeroTiempo.setText(String.valueOf(tiempoJuego));
		lNumeroEnemigosMatados.setText(String.valueOf(totalEnem));
		lNumeroPorTiempo.setText(String.valueOf(multTiempo));
		lNumeroPorEnemigos.setText(String.valueOf(multEnem));
		lPuntosTiempo.setText(String.valueOf(totalPuntosTiempo));
		lPuntosEnemigos.setText(String.valueOf(totalPuntosEnemigos));
		lNumeroTotal.setText(String.valueOf(totalPuntos));
		lNumeroMonedas.setText(String.valueOf(totalMonedas));

		//Control de rango
		if(totalPuntos == 0 ||totalPuntos <= 500){
			lLetraRango.setText("D");
		}else{
			if(totalPuntos > 500 ||totalPuntos <= 1000){
				lLetraRango.setText("C");
			}else{
				if(totalPuntos > 1500 ||totalPuntos <= 2000){
					lLetraRango.setText("B");
				}else{
					if(totalPuntos > 2000 ||totalPuntos <= 2500){
						lLetraRango.setText("A");
					}else{
						if(totalPuntos > 2500 ||totalPuntos <= 3000){
							lLetraRango.setText("S");
						}
					}
				}
			}
		}
//si se pasa el nivel y el siguinte no esta desblqueado
		//panelInicial.gestor.desbloqueaFaseNivelDefault(/*fase actual +1*/, idPartida);
//para saber las fases desbloqueadas en nivel default
		//panelInicial.gestor.listFasesDesbloqueadas(idPartida);
		//Control subida de nivel respecto al nivel de experiencia
		while(totalExperiencia >= 100){
			totalExperiencia -= 100;
			contNivel++;
		}
		numeroNivel -= contNivel;
		if(numeroNivel >= 0){
			lNumeroNivelesSubidos.setText(String.valueOf(numeroNivel));
		}else{
			lNumeroNivelesSubidos.setText(String.valueOf(0));
		}
		//Guardar en la BD la experiencia y el nivel obtenidos (totalExperiencia y numeroNivel
		
		
	}

	private void subirNivel(MouseEvent evt){
		panelInicial.ventanaJuego.getContentPane().add(panelSubirNivel, 0);
		this.setVisible(false);
		panelSubirNivel.setVisible(true);
	}

}
